package com.flong.scala.base

import java.io.{File, PrintWriter}

import scala.io.Source

/**
 * Created by liangjl
 * Date on 2016/6/30-9:05
 * Version:1.0
 * Description:
 */
object Io {
  def main(args: Array[String]) {
    writer();
    //reader();
    //readerDataByNet();

  }

  /**
   * 写信息到文件
   */
  private def writer(): Unit = {
    //path:加上String说明这个是字符串类型
    var path: String = "D:/scala/";
    val file = new File(path);
    val flag = file.exists();
    //判断文件夹是否存在，不存在就创建
    if (!flag) {
      //mkdirs()可以建立多级文件夹， mkdir()只会建立一级的文件夹
      file.mkdirs();
    } else {
      path += "test" + ".txt";
      println(path)
      val newFile = new File(path);
      val writer = new PrintWriter(newFile)

      //循环1到10的范围，并赋值给一个i
      for (i <- 1 to 10) {
        writer.write("写信息到文件" + i + "\n")
      }
      writer.close();
    }
  }


  /**
   * 从本地读取文件信息，并设置编码
   */
  private def reader(): Unit = {
    val filePth = "D:/scala/test.txt";
    val localFile = Source.fromFile(filePth, "utf-8"); //从本地读取文件信息，并设置编码
    //循环从文件里面读取数据，而且是以一行一行读取。
    for (line <- localFile.getLines()) {
      println(line); //输出文件的信息
    }
    localFile.close(); //关闭文件流
  }


  /**
   * 读取数据，通过网络途径去读取。
   */
  private def readerDataByNet(): Unit = {
    //给一个常量的网络路径给urlPath
    val urlPath = "http://scala-ide.org/documentation.html";

    val webSite = Source.fromURL(urlPath) //设置Url路径
    //方法一：循环打印信息
    /*   for(line <- webSite.getLines()){
           //println(line)//打印并换行输出
            Console.print(line)//打印不换行输出
            //Console.println()
       }
   */

    //方法二：循环打印信息
    webSite.foreach(print); //这个print是一个函数
    //关闭流
    webSite.close();

  }

}
